 CREATE EXTERNAL TABLE jms_dwd.dwd_s03_waybill_trace_unsigned_dt(
   `waybill_no` string COMMENT '运单号',
   `waybill_first_scantime` timestamp COMMENT '最早操作时间',
   `waybill_first_scantype` string COMMENT '最早扫描类型',
   `waybill_end_scantime` timestamp COMMENT '最晚操作时间',
   `waybill_end_scantype` string COMMENT '最晚扫描类型',
   `waybill_all_operation_times` int COMMENT '运单扫描总次数',
   `center_all_operation_times` int COMMENT '中心扫描总次数',
   `nodal_all_operation_times` int COMMENT '集散网点扫描次数',
   `network_all_count` int COMMENT '运单总经过网点数',
   `center_all_count` int COMMENT '运单总经过中心数',
   `nodal_all_count` int COMMENT '运单总经过集散网点数',
   `actual_taking_scantime` timestamp COMMENT '实际揽收时间 ',
   `actual_taking_scansitecode` string COMMENT '实际揽收网点',
   `actual_taking_weight` double COMMENT '实际揽收重量',
   `actual_taking_scantype` string COMMENT '实际揽收扫描类型 ',
   `taking_later_scantime` timestamp COMMENT '最晚揽收时间',
   `taking_early_scantime` timestamp COMMENT '最早揽收时间',
   `taking_early_scansitecode` string COMMENT '最早揽收网点',
   `taking_early_weight` double COMMENT '最早揽收重量',
   `warehousing_later_scantime` timestamp COMMENT '最晚入仓时间',
   `warehousing_early_scantime` timestamp COMMENT '最早入仓时间',
   `warehousing_early_scansitecode` string COMMENT '最早入仓网点',
   `warehousing_early_weight` double COMMENT '最早入仓重量',
   `bagging_early_scantime` timestamp COMMENT '最早装袋时间',
   `bagging_early_scansitecode` string COMMENT '最早装袋网点编码',
   `bagging_early_package_code` string COMMENT '最早装袋包号',
   `first_network_network_code` string COMMENT '始发网点网点编码',
   `first_network_loading_later_time` timestamp COMMENT '始发网点最晚装车时间',
   `first_network_loading_later_weight` double COMMENT '始发网点最晚装车扫描对应重量',
   `first_network_send_later_time` timestamp COMMENT '始发网点最晚发车时间',
   `first_network_send_later_weight` double COMMENT '始发网点最晚发车扫描对应重量',
   `first_network_loading_send_shipment_no` string COMMENT '始发网点最晚装车发件扫描对应任务号',
   `first_network_loading_send_planned_departure_time` timestamp COMMENT '始发网点最晚装车发件规划发车时间',
   `first_network_loading_send_planned_arrival_time` timestamp COMMENT '始发网点最晚装车发件规划到车时间',
   `first_network_loading_send_actual_departure_time` timestamp COMMENT '始发网点最晚装车发件实际发车时间',
   `first_network_loading_send_actual_arrival_time` timestamp COMMENT '始发网点最晚装车发件实际到车时间',
   `first_network_loading_send_next_network_code` string COMMENT '始发网点最晚装车发件下一站网点编码',
   `first_network_loading_send_next_network_type` tinyint COMMENT '始发网点最晚装车发件下一站网点类型',
   `first_nodal_network_code` string COMMENT '始发集散网点',
   `first_nodal_unloading_early_time` timestamp COMMENT '始发集散最早卸车时间',
   `first_nodal_unloading_early_weight` double COMMENT '始发集散最早卸车扫描对应重量',
   `first_nodal_arrival_early_time` timestamp COMMENT '始发集散最早到件时间',
   `first_nodal_arrival_early_weight` double COMMENT '始发集散最早到件扫描对应重量',
   `first_nodal_unloading_arrival_shipment_no` string COMMENT '始发集散最早卸车到件扫描对应任务号',
   `first_nodal_unloading_arrival_planned_departure_time` timestamp COMMENT '始发集散最早卸车到件规划发车时间',
   `first_nodal_unloading_arrival_planned_arrival_time` timestamp COMMENT '始发集散最早卸车到件规划到车时间',
   `first_nodal_unloading_arrival_actual_departure_time` timestamp COMMENT '始发集散最早卸车到件实际发车时间',
   `first_nodal_unloading_arrival_actual_arrival_time` timestamp COMMENT '始发集散最早卸车到件实际到车时间',
   `first_nodal_loading_later_time` timestamp COMMENT '始发集散最晚装车时间',
   `first_nodal_loading_later_weight` double COMMENT '始发集散最晚装车扫描对应重量',
   `first_nodal_send_later_time` timestamp COMMENT '始发集散最晚发车时间',
   `first_nodal_send_later_weight` double COMMENT '始发集散最晚发车扫描对应重量',
   `first_nodal_loading_send_shipment_no` string COMMENT '始发集散最晚装车发件扫描对应任务号',
   `first_nodal_loading_send_planned_departure_time` timestamp COMMENT '始发集散最晚装车发件规划发车时间',
   `first_nodal_loading_send_planned_arrival_time` timestamp COMMENT '始发集散最晚装车发件规划到车时间',
   `first_nodal_loading_send_actual_departure_time` timestamp COMMENT '始发集散最晚装车发件实际发车时间',
   `first_nodal_loading_send_actual_arrival_time` timestamp COMMENT '始发集散最晚装车发件实际到车时间',
   `first_nodal_loading_send_next_network_code` string COMMENT '始发集散最晚装车发件下一站网点编码',
   `first_nodal_loading_send_next_network_type` tinyint COMMENT '始发集散最晚装车发件下一站网点类型',
   `first_center_network_code` string COMMENT '始发转运中心',
   `first_center_unloading_early_time` timestamp COMMENT '始发中心最早卸车时间',
   `first_center_unloading_early_weight` double COMMENT '始发中心最早卸车扫描对应重量',
   `first_center_arrival_early_time` timestamp COMMENT '始发中心最早到件时间',
   `first_center_arrival_early_weight` double COMMENT '始发中心最早到件扫描对应重量',
   `first_center_unloading_arrival_shipment_no` string COMMENT '始发中心最早卸车到件扫描对应任务号',
   `first_center_unloading_arrival_planned_departure_time` timestamp COMMENT '始发中心最早卸车到件规划发车时间',
   `first_center_unloading_arrival_planned_arrival_time` timestamp COMMENT '始发中心最早卸车到件规划到车时间',
   `first_center_unloading_arrival_actual_departure_time` timestamp COMMENT '始发中心最早卸车到件实际发车时间',
   `first_center_unloading_arrival_actual_arrival_time` timestamp COMMENT '始发中心最早卸车到件实际到车时间',
   `first_center_loading_later_time` timestamp COMMENT '始发中心最晚装车时间',
   `first_center_loading_later_weight` double COMMENT '始发中心最晚装车扫描对应重量',
   `first_center_send_later_time` timestamp COMMENT '始发中心最晚发件时间',
   `first_center_send_later_weight` double COMMENT '始发中心最晚发件扫描对应重量',
   `first_center_loading_send_shipment_no` string COMMENT '始发中心最晚装车发件扫描对应任务号',
   `first_center_loading_send_planned_departure_time` timestamp COMMENT '始发中心最晚装车发件规划发车时间',
   `first_center_loading_send_planned_arrival_time` timestamp COMMENT '始发中心最晚装车发件规划到车时间',
   `first_center_loading_send_actual_departure_time` timestamp COMMENT '始发中心最晚装车发件实际发车时间',
   `first_center_loading_send_actual_arrival_time` timestamp COMMENT '始发中心最晚装车发件实际到车时间',
   `first_center_loading_send_next_network_code` string COMMENT '始发中心最晚装车发件下一站网点编码',
   `first_center_loading_send_next_network_type` tinyint COMMENT '始发中心最晚装车发件下一站网点类型',
   `second_center_network_code` string COMMENT '第二转运中心',
   `second_center_unloading_early_time` timestamp COMMENT '第二中心最早卸车时间',
   `second_center_unloading_early_weight` double COMMENT '第二中心最早卸车扫描对应重量',
   `second_center_arrival_early_time` timestamp COMMENT '第二中心最早到件时间',
   `second_center_arrival_early_weight` double COMMENT '第二中心最早到件扫描对应重量',
   `second_center_unloading_arrival_shipment_no` string COMMENT '第二中心最早卸车到件扫描对应任务号',
   `second_center_unloading_arrival_planned_departure_time` timestamp COMMENT '第二中心最早卸车到件规划发车时间',
   `second_center_unloading_arrival_planned_arrival_time` timestamp COMMENT '第二中心最早卸车到件规划到车时间',
   `second_center_unloading_arrival_actual_departure_time` timestamp COMMENT '第二中心最早卸车到件实际发车时间',
   `second_center_unloading_arrival_actual_arrival_time` timestamp COMMENT '第二中心最早卸车到件实际到车时间',
   `second_center_loading_later_time` timestamp COMMENT '第二中心最晚装车时间',
   `second_center_loading_later_weight` double COMMENT '第二中心最晚装车扫描对应重量',
   `second_center_send_later_time` timestamp COMMENT '第二中心最晚发件时间',
   `second_center_send_later_weight` double COMMENT '第二中心最晚发件扫描对应重量',
   `second_center_loading_send_shipment_no` string COMMENT '第二中心最晚装车发件扫描对应任务号',
   `second_center_loading_send_planned_departure_time` timestamp COMMENT '第二中心最晚装车发件规划发车时间',
   `second_center_loading_send_planned_arrival_time` timestamp COMMENT '第二中心最晚装车发件规划到车时间',
   `second_center_loading_send_actual_departure_time` timestamp COMMENT '第二中心最晚装车发件实际发车时间',
   `second_center_loading_send_actual_arrival_time` timestamp COMMENT '第二中心最晚装车发件实际到车时间',
   `second_center_loading_send_next_network_code` string COMMENT '第二中心最晚装车发件下一站网点编码',
   `second_center_loading_send_next_network_type` tinyint COMMENT '第二中心最晚装车发件下一站网点类型',
   `third_center_network_code` string COMMENT '第三转运中心',
   `third_center_unloading_early_time` timestamp COMMENT '第三中心最早卸车时间',
   `third_center_unloading_early_weight` double COMMENT '第三中心最早卸车扫描对应重量',
   `thirdcenter_arrival_early_time` timestamp COMMENT '第三中心最早到件时间',
   `third_center_arrival_early_weight` double COMMENT '第三中心最早到件扫描对应重量',
   `third_center_unloading_arrival_shipment_no` string COMMENT '第三中心最早卸车到件扫描对应任务号',
   `third_center_unloading_arrival_planned_departure_time` timestamp COMMENT '第三中心最早卸车到件规划发车时间',
   `third_center_unloading_arrival_planned_arrival_time` timestamp COMMENT '第三中心最早卸车到件规划到车时间',
   `third_center_unloading_arrival_actual_departure_time` timestamp COMMENT '第三中心最早卸车到件实际发车时间',
   `third_center_unloading_arrival_actual_arrival_time` timestamp COMMENT '第三中心最早卸车到件实际到车时间',
   `third_center_loading_later_time` timestamp COMMENT '第三中心最晚装车时间',
   `third_center_loading_later_weight` double COMMENT '第三中心最晚装车扫描对应重量',
   `third_center_send_later_time` timestamp COMMENT '第三中心最晚发件时间',
   `third_center_send_later_weight` double COMMENT '第三中心最晚发件扫描对应重量',
   `third_center_loading_send_shipment_no` string COMMENT '第三中心最晚装车发件扫描对应任务号',
   `third_center_loading_send_planned_departure_time` timestamp COMMENT '第三中心最晚装车发件规划发车时间',
   `third_center_loading_send_planned_arrival_time` timestamp COMMENT '第三中心最晚装车发件规划到车时间',
   `third_center_loading_send_actual_departure_time` timestamp COMMENT '第三中心最晚装车发件实际发车时间',
   `third_center_loading_send_actual_arrival_time` timestamp COMMENT '第三中心最晚装车发件实际到车时间',
   `third_center_loading_send_next_network_code` string COMMENT '第三中心最晚装车发件下一站网点编码',
   `third_center_loading_send_next_network_type` tinyint COMMENT '第三中心最晚装车发件下一站网点类型',
   `fourth_center_network_code` string COMMENT '第四转运中心',
   `fourth_center_unloading_early_time` timestamp COMMENT '第四中心最早卸车时间',
   `fourth_center_unloading_early_weight` double COMMENT '第四中心最早卸车扫描对应重量',
   `fourth_center_arrival_early_time` timestamp COMMENT '第四中心最早到件时间',
   `fourth_center_arrival_early_weight` double COMMENT '第四中心最早到件扫描对应重量',
   `fourth_center_unloading_arrival_shipment_no` string COMMENT '第四中心最早卸车到件扫描对应任务号',
   `fourth_center_unloading_arrival_planned_departure_time` timestamp COMMENT '第四中心最早卸车到件规划发车时间',
   `fourth_center_unloading_arrival_planned_arrival_time` timestamp COMMENT '第四中心最早卸车到件规划到车时间',
   `fourth_center_unloading_arrival_actual_departure_time` timestamp COMMENT '第四中心最早卸车到件实际发车时间',
   `fourth_center_unloading_arrival_actual_arrival_time` timestamp COMMENT '第四中心最早卸车到件实际到车时间',
   `fourth_center_loading_later_time` timestamp COMMENT '第四中心最晚装车时间',
   `fourth_center_loading_later_weight` double COMMENT '第四中心最晚装车扫描对应重量',
   `fourth_center_send_later_time` timestamp COMMENT '第四中心最晚发件时间',
   `fourth_center_send_later_weight` double COMMENT '第四中心最晚发件扫描对应重量',
   `fourth_center_loading_send_shipment_no` string COMMENT '第四中心最晚装车发件扫描对应任务号',
   `fourth_center_loading_send_planned_departure_time` timestamp COMMENT '第四中心最晚装车发件规划发车时间',
   `fourth_center_loading_send_planned_arrival_time` timestamp COMMENT '第四中心最晚装车发件规划到车时间',
   `fourth_center_loading_send_actual_departure_time` timestamp COMMENT '第四中心最晚装车发件实际发车时间',
   `fourth_center_loading_send_actual_arrival_time` timestamp COMMENT '第四中心最晚装车发件实际到车时间',
   `fourth_center_loading_send_next_network_code` string COMMENT '第四中心最晚装车发件下一站网点编码',
   `fourth_center_loading_send_next_network_type` tinyint COMMENT '第四中心最晚装车发件下一站网点类型',
   `end_center_network_code` string COMMENT '末端转运中心',
   `end_center_unloading_early_time` timestamp COMMENT '末端中心最早卸车时间',
   `end_center_unloading_early_weight` double COMMENT '末端中心最早卸车扫描对应重量',
   `end_center_arrival_early_time` timestamp COMMENT '末端中心最早到件时间',
   `end_center_arrival_early_weight` double COMMENT '末端中心最早到件扫描对应重量',
   `end_center_unloading_arrival_shipment_no` string COMMENT '末端中心最早卸车到件扫描对应任务号',
   `end_center_unloading_arrival_planned_departure_time` timestamp COMMENT '末端中心最早卸车到件规划发车时间',
   `end_center_unloading_arrival_planned_arrival_time` timestamp COMMENT '末端中心最早卸车到件规划到车时间',
   `end_center_unloading_arrival_actual_departure_time` timestamp COMMENT '末端中心最早卸车到件实际发车时间',
   `end_center_unloading_arrival_actual_arrival_time` timestamp COMMENT '末端中心最早卸车到件实际到车时间',
   `end_center_loading_later_time` timestamp COMMENT '末端中心最晚装车时间',
   `end_center_loading_later_weight` double COMMENT '末端中心最晚装车扫描对应重量',
   `end_center_send_later_time` timestamp COMMENT '末端中心最晚发件时间',
   `end_center_send_later_weight` double COMMENT '末端中心最晚发件扫描对应重量',
   `end_center_loading_send_shipment_no` string COMMENT '末端中心最晚装车发件扫描对应任务号',
   `end_center_loading_send_planned_departure_time` timestamp COMMENT '末端中心最晚装车发件规划发车时间',
   `end_center_loading_send_planned_arrival_time` timestamp COMMENT '末端中心最晚装车发件规划到车时间',
   `end_center_loading_send_actual_departure_time` timestamp COMMENT '末端中心最晚装车发件实际发车时间',
   `end_center_loading_send_actual_arrival_time` timestamp COMMENT '末端中心最晚装车发件实际到车时间',
   `end_center_loading_send_next_network_code` string COMMENT '末端中心最晚装车发件下一站网点编码',
   `end_center_loading_send_next_network_type` tinyint COMMENT '末端中心最晚装车发件下一站网点类型',
   `end_nodal_network_code` string COMMENT '末端集散网点',
   `end_nodal_unloading_early_time` timestamp COMMENT '末端集散最早卸车时间',
   `end_nodal_unloading_early_weight` double COMMENT '末端集散最早卸车扫描对应重量',
   `end_nodal_arrival_early_time` timestamp COMMENT '末端集散最早到件时间',
   `end_nodal_arrival_early_weight` double COMMENT '末端集散最早到件扫描对应重量',
   `end_nodal_unloading_arrival_shipment_no` string COMMENT '末端集散最早卸车到件扫描对应任务号',
   `end_nodal_unloading_arrival_planned_departure_time` timestamp COMMENT '末端集散最早卸车到件规划发车时间',
   `end_nodal_unloading_arrival_planned_arrival_time` timestamp COMMENT '末端集散最早卸车到件规划到车时间',
   `end_nodal_unloading_arrival_actual_departure_time` timestamp COMMENT '末端集散最早卸车到件实际发车时间',
   `end_nodal_unloading_arrival_actual_arrival_time` timestamp COMMENT '末端集散最早卸车到件实际到车时间',
   `end_nodal_loading_later_time` timestamp COMMENT '末端集散最晚装车时间',
   `end_nodal_loading_later_weight` double COMMENT '末端集散最晚装车扫描对应重量',
   `end_nodal_send_later_time` timestamp COMMENT '末端集散最晚发车时间',
   `end_nodal_send_later_weight` double COMMENT '末端集散最晚发车扫描对应重量',
   `end_nodal_loading_send_shipment_no` string COMMENT '末端集散最晚装车发件扫描对应任务号',
   `end_nodal_loading_send_planned_departure_time` timestamp COMMENT '末端集散最晚装车发件规划发车时间',
   `end_nodal_loading_send_planned_arrival_time` timestamp COMMENT '末端集散最晚装车发件规划到车时间',
   `end_nodal_loading_send_actual_departure_time` timestamp COMMENT '末端集散最晚装车发件实际发车时间',
   `end_nodal_loading_send_actual_arrival_time` timestamp COMMENT '末端集散最晚装车发件实际到车时间',
   `end_nodal_loading_send_next_network_code` string COMMENT '末端集散最晚装车发件下一站网点编码',
   `end_nodal_loading_send_next_network_type` tinyint COMMENT '末端集散最晚装车发件下一站网点类型',
   `end_network_network_code` string COMMENT '末端网点网点编码',
   `end_network_unloading_early_time` timestamp COMMENT '末端网点最最早卸车时间',
   `end_network_arrival_early_time` timestamp COMMENT '末端网点最最早到件时间',
   `deliver_early_scantime` timestamp COMMENT '最早派件时间',
   `deliver_later_scantime` timestamp COMMENT '最晚派件时间',
   `deliver_later_scansitecode` string COMMENT '最晚派件网点',
   `deliver_later_weight` double COMMENT '最晚派件重量',
   `deliver_later_user` string COMMENT '最晚派件人',
   `sign_later_scantime` timestamp COMMENT '最晚签收时间',
   `sign_early_scantime` timestamp COMMENT '最早签收时间',
   `sign_early_scansitecode` string COMMENT '最早签收网点',
   `sign_early_weight` double COMMENT '最早签收重量',
   `aging_sign_scantime` timestamp COMMENT '实效签收时间',
   `aging_sign_scansitecode` string COMMENT '实效签收网点',
   `aging_sign_weight` double COMMENT '实效签收重量',
   `aging_sign_scantype` string COMMENT '实效签收扫描类型',
   `actual_sign_scantime` timestamp COMMENT '实际签收时间',
   `actual_sign_scansitecode` string COMMENT '实际签收网点',
   `actual_sign_weight` double COMMENT '实际签收重量',
   `actual_sign_scantype` string COMMENT '实际签收扫描类型',
   `waybill_status_code` bigint COMMENT '运单状态code',
   `goods_type_id` bigint COMMENT '物品类型id',
   `goods_type_code` string COMMENT '物品类型code',
   `goods_type_name` string COMMENT '物品类型名称',
   `goods_name` string COMMENT '物品名称',
   `dispatch_network_code` string COMMENT '派件网点code',
   `first_code` string COMMENT '一段码',
   `second_code` string COMMENT '二段码',
   `third_code` string COMMENT '三段码',
   `is_sign` smallint COMMENT '签收标识,1是，0否',
   `sign_time` timestamp COMMENT '签收时间',
   `is_abnormal` smallint COMMENT '问题件标识,1是，0否',
   `waybill_source_code` string COMMENT '运单来源code',
   `waybill_source_name` string COMMENT '运单来源名称',
   `is_void` smallint COMMENT '是否作废件,1是，0否',
   `is_refund` smallint COMMENT '是否退件,1是，0否',
   `pick_network_code` string COMMENT '寄件网点code',
   `pick_network_name` string COMMENT '寄件网点名称',
   `input_time` timestamp COMMENT '录入时间',
   `input_network_code` string COMMENT '录入网点code',
   `settlement_weight` decimal(14,2) COMMENT '结算重量',
   `order_source_code` string COMMENT '订单来源编码',
   `is_delete` smallint COMMENT '是否删除,1未删除，2已删除',
   `package_collect_weight` double COMMENT '收件重量,单位千克',
   `package_receipt_weight` double COMMENT '入仓重量,单位千克',
   `waybill_weight` double COMMENT '运单重量,单位千克',
   `center_name` string COMMENT '转运中心名称',
   `center_code` string COMMENT '转运中心编码',
   `ordersource_code` string COMMENT '多平台订单来源编码',
   `ordersource_name` string COMMENT '多平台订单来源名称')
 COMMENT '运单全链路轨迹未签收表'
 PARTITIONED BY (
   `dt` string COMMENT '分区字段,当前未签收日期')
 ROW FORMAT SERDE
   'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
 STORED AS INPUTFORMAT
   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
 OUTPUTFORMAT
   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
 LOCATION
   '/dw/hive/jms_dwd.db/external/dwd_s03_waybill_trace_unsigned_dt'
 TBLPROPERTIES (
   'discover.partitions'='true',
   'parquet.column.index.access'='true');

--目标表： dwd_s03_barscan_operations_hist_dt
--该表设计目标： 获取扫描表基础数据做明细模型的基表，以运单在运单表中的录入时间为分区Dt，将运单历史的和最新的所有扫描操作，以追加的方式添加到Dt分区中
--注意事项：
--1 支持回刷，通过operation_dt 字段保证，每次重跑之前，先通过operation_dt字段，过滤上次写入的数据